#include <iostream>
#include <string>

class Person {
private:
    std::string name;

public:
    template<typename T>
    Person(T&& t) :
        name(std::forward<T>(t))
    {
    }
};

template<typename T>
struct foo {
    using type = T;
};

template<typename T, typename T1 = typename foo<T>::type_1>
void funcfoo(T&& t)
{
    auto s = std::string(std::forward<T>(t));
}

void funcfoo(int)
{
}

int main() {
    foo<int>::type i = 10;

    //foo<int>::type_1 i1 = 10;

    short s = 1;
    funcfoo(s);

    return 0;
}